//#include <iostream>
//#include <vector>
//#include <string>
//using namespace std;
//
//vector<int> arr;
//int cnt[10];
//void dfs2(int len,int tmp) {
//    bool t = false;
//    for (int i = 1; i <= len; i++) {
//        if (cnt[i] == 0) {
//            t = true;
//            cnt[i] = 1;
//            dfs2(len, tmp * 10 + i);
//            cnt[i] = 0;
//        }
//    }
//    if (t == false) {
//        arr.push_back(tmp);
//    }
//}
//
//void dfs() {
//    for (int i = 1; i <= 9; i++) {
//        dfs2(i,0);
//    }
//}
//int main() {
//    dfs();
//    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
//    int t;
//    cin >> t;
//    while (t--) {
//        int l = 0, r = 0, left = 0, right = arr.size();
//        cin >> l >> r;
//        bool t = false;
//        while (left <= right) {
//            int mid = (left + right) / 2;
//            if (arr[mid] > r) {
//                right = mid - 1;
//            }
//            else if(arr[mid] < l) {
//                left = mid + 1;
//            }
//            else {
//                t = true;
//                cout << arr[mid] << endl;
//                break;
//            }
//        }
//        if (t == false) {
//            cout << -1 << endl;
//        }
//    }
//    return 0;
//}
//#include <iostream>
//using namespace std;
//int arr[1000006];
//int main() {
//    int t;  cin >> t;
//    while (t--) {
//        int n, k;    cin >> n >> k;
//        k = min(k, n - k);
//        int cnt0 = 0, cnt1 = 0;
//        char c = getchar();
//        for (int i = 1; i <= n; i++) {
//            char c = getchar();
//            arr[i] = c -  '0';
//        }
//        int left = 1, ans = 0;
//        for (int right = 1; right <= n; right++) {
//            arr[right] == 0 ? cnt0++ : cnt1++;
//            while (cnt0 > k && cnt1 > k) {
//                arr[left] == 0 ? cnt0-- : cnt1--;
//                left++;
//            }
//            if(cnt0 == k || cnt1 == k)
//                ans = max(ans, cnt0 + cnt1);
//        }
//        cout << ans << endl;
//    }
//}

#include <iostream>
using namespace std;

int main() {
    int t;  cin >> t;
    while (t--) {
        unsigned long long x, y;  
        y = 0;
        // x = ((long long)1 << 31) - 1;
        cin >> x;
        for (int i = 0; i < 31; i++) {
            if (((x >> i) & 1) == 0) {
                y += 1 << i;
            }
        }
        // y -= 1 << 31;
        if (y == 0) {
            cout << -1 << endl;
            continue;
        }
        // printf("%llx %llx", x, y);
        if ((x | y) == (x ^ y)) {
            // cout << 1 << endl;
        }
        cout << y << endl;
    }
}